Hardware-generated dynamic identifier

ABSTRACT

In an example, there is disclosed an electronic apparatus, comprising: a hardware-encoded internal private key; and one or more logic elements comprising a key generation engine to: receive an third-party key; and operate on the third-party key and the internal private key to generate a hardware-generated dynamic identifier (HGDI). There is also disclosed a method of providing an HGDI engine, and one or more computer-readable mediums having stored thereon executable instructions for providing an HGDI.

FIELD OF THE SPECIFICATION

This disclosure relates in general to the field of computer security,and more particularly, though not exclusively to, a system and methodfor providing a hardware-generated dynamic identifier.

BACKGROUND

Certain existing electronic devices, such as processors, networkinterface cards, or other circuits, may self-identify themselves with astatic device identifier. For example, a CPU may have a hard-codeddevice ID embedded within it. A network interface card (NIC) may includea media access control (MAC) address hard coded into it.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is best understood from the following detaileddescription when read with the accompanying figures. It is emphasizedthat, in accordance with the standard practice in the industry, variousfeatures are not necessarily drawn to scale, and are used forillustration purposes only. Where a scale is shown, explicitly orimplicitly, it provides only one illustrative example. In otherembodiments, the dimensions of the various features may be arbitrarilyincreased or reduced for clarity of discussion.

FIG. 1 is a block diagram of a secured enterprise according to one ormore examples of the present specification.

FIG. 2 is a block diagram of a client device according to one or moreexamples of the present specification.

FIG. 3 is a block diagram of a server according to one or more examplesof the present specification.

FIG. 4A is a block diagram of a hardware-generated dynamic identifierengine according to one or more examples of the present specification.

FIG. 4B provides additional details of a hardware-generated dynamicidentifier according to one or more examples of the presentspecification.

FIG. 5 is a block diagram of a manufacturing ecosystem according to oneor more examples of the present specification.

SUMMARY

In an example, there is disclosed an electronic apparatus, comprising: ahardware-encoded internal private key; and one or more logic elementscomprising a key generation engine to: receive an third-party key; andoperate on the third-party key and the internal private key to generatea hardware-generated dynamic identifier (HGDI). There is also discloseda method of providing an HGDI engine, and one or more computer-readablemediums having stored thereon executable instructions for providing anHGDI.

Embodiments of the Disclosure

The following disclosure provides many different embodiments, orexamples, for implementing different features of the present disclosure.Specific examples of components and arrangements are described below tosimplify the present disclosure. These are, of course, merely examplesand are not intended to be limiting. Further, the present disclosure mayrepeat reference numerals and/or letters in the various examples. Thisrepetition is for the purpose of simplicity and clarity and does not initself dictate a relationship between the various embodiments and/orconfigurations discussed. Different embodiments may have differentadvantages, and no particular advantage is necessarily required of anyembodiment.

According to embodiments of this specification, a computing device orother apparatus can generate an arbitrary number of dynamic, persistent,globally-unique (or pseudo-unique) device identifiers. Features of theidentifier include, by way of nonlimiting example:

-   -   a. Arbitrary number—The computing device can generate any        suitable number of IDs. Thus, for each third-party device that        seeks to identify the first device, the first device can        generate an ID dedicated exclusively to that third device.        Furthermore, in some cases, a temporary ID may be generated for        a specific transaction, such as a network socket.    -   b. Dynamic—The ID for the device is generated on-the-fly for        approved software and services, rather than stored, such as in        non-volatile memory.    -   c. Private—An administrator or user of the device controls        compartmentalized identities, so that there is no need for        private user data or name/password pairs. The administrator or        user controls access between the requestor and the embedded HGDI        system    -   d. Persistent—Because the dynamic ID is seeded, the same value        can be persistently re-generated simply by using the same seed.        This may be done with a one-way hash (e.g., the ID can be        generated from the seed, but the seed cannot be reverse        engineered from the hash). In one embodiment, the unique ID        generator is hard-coded into silicon, so that IDs remain        consistent even after reboot, data deletion, change of operating        system, software uninstall, or even a re-flashed firmware, or        use of a virtual machine.    -   e. Globally Unique or Pseudo-Unique—The ID generated by the        device may be globally unique, or the degree of entropy may be        high enough that the ID is pseudo-unique, meaning that there is        extremely low probability that two devices will generate the        same pseudo-unique ID, even lower probability that they will do        so in a context where there is a collision, and near-zero        probability that an attacker could intentionally do so as part        of an attack.    -   f. Secure—Silicon-based passive security may be provided, with        attack sensors, and no data or key storage. Thus, the ID may be        very difficult to undermine via the operating system or        software.

The foregoing attributes are provided by way of nonlimiting example.Such an ID may be referred to throughout this specification as a“hardware generated dynamic identifier” (HGDI), though it should beunderstood that not all HGDIs must necessarily possess all of theforegoing attributes, and that some HGDIs may possess additionalbeneficial attributes.

HGDIs may be used for a variety of purposes, including by way ofnonlimiting example, asset tracking and management, software anti-piracylicensing, supply chain attestation, network access controls,second-factor transaction authentication, user privacy, and dataprotection (including data loss prevention, enterprise resourcemanagement, and digital rights management).

In an example, each of a plurality of devices is built with a uniqueHGDI engine permanently built into hardware, such as burned intosilicon. There may be common elements between all of the HGDI engines,including the logic for HGDI generation. However, each one, also haspermanently stored within it, in silicon, a unique or pseudo-uniqueinternal private key. This internal private key may be generatedon-the-fly during production so that even the manufacturer does not knowand cannot know the internal private key of each device. This can beaccomplished by selectively triggering permanent fuses in a fuse arrayto generate a value for the internal private key. Once the private keyis generated, the only way to “read” it is through cumbersome and likelydestructive means, such as using a scanning electron microscope toexamine the fuses. In an example, Intel® Hanalei Valley or a similarexisting method may be used to perform the “fuse blowing” to generate anHGDI internal private key.

When a third-party device wishes to authenticate itself to the firstdevice, the third-party device may be provisioned with a third-partykey. Provisioning a third-party key can take one of several forms. Forexample, the third party itself may generate its own third-party key.The third party may request a third-party key from the first device, andthe first device may dynamically generate a unique or pseudo-uniquethird party key, which it can then send to the third party. Or a trustedintermediate key authority may provision a third-party key to the thirdparty.

Advantageously, the third-party key need not be encrypted or hidden. Thethird-party can send the third-party key in clear text and in the open.When the first device receives the third-party key, it uses the HGDIengine to generate the HGDI for that third-party key, and then sends theencrypted HGDI to the third party. The third party can then decrypt theHGDI and compare it to its own stored copy of the HGDI to verify thatthe first device is genuine.

Keeping the third-party key in the clear can in fact act, in some cases,as an additional security measure. Clear-text third-party keys may actas an invitation for attackers to attempt to tamper with the system, andthose attempts may be detected and mitigated.

In an embodiment, a network or security administrator of an enterprisemay have visibility into the overall system. The network administratorcan watch third-party keys entering the network, and can watch encrypted“blobs” being passed back in response. The network administrator can seeand manage who can request, and who has requested identifiers in thepast. Thus, the administrator has a great degree of control over theecosystem.

A processor with a built-in HGDI engine is discussed above as anexample, but other parts of a device may also include an HGDI. Forexample, in some high-security contexts, it is important to be able toensure that a computer has not been tampered with, including any“plug-in” modules, such as the motherboard, a network card, graphics,card, or other device. In that case, each component that needs to betracked may include its own HGDI engine so that each can be tracked andverified.

Potential applications of an HGDI include, by way of non-limitingexample:

-   -   a. Localized multi-factor authentication.    -   b. Localized key generation and provisioning.    -   c. Localized source code validation.    -   d. Security independent software vendor (ISV) integration.    -   e. Identity provision and revocation.    -   f. Proxy validation.    -   g. Source validation services.    -   h. Cyber supply chain ID tracking and data ecosystems.    -   i. ISV software licensing and protection.    -   j. Digital rights managements.    -   k. Internet ID authorized transaction security (e.g., for        banking).    -   l. Asset tracking, management, and hardening assurance.    -   m. Local system ID and authorization services.    -   n. Data loss prevention.    -   o. Enterprise resource management.    -   p. Supply-chain management.

In defense and security contexts especially, an HGDI can be used totrack exactly who has used a machine, and what it has been used for. Forexample, consider a case of a government agency where machines may betransferred between different departments. Some users may have highersecurity clearances, and some lesser or no security clearance. If amachine is transferred from a cleared operator to an uncleared operator,HGDI can uniquely identify the machine so that the agency can ensurethat appropriate measures are taken to destroy classified data beforethe transfer happens. Similarly, a government agency may need to verifythat its hardware and software are genuine and have not been tamperedwith. An HGDI engine can be queried to verify that original hardware hasremained intact. In an enterprise security context, an HGDI may be usedto provide fine-grained security policies. For example, a firewall maybe provided that allows a particular resource to be accessed only byspecific machines. Advantageously, because the HGDI engine may beencoded in hardware, that machine can be recognized even if the user isoperating via a VM or other virtual environment, and even if the harddrive has been reformatted or the BIOS re-flashed.

A system and method for providing a hardware-generated dynamicidentifier will now be described with more particular reference to theattached FIGURES. It should be noted that throughout the FIGURES,certain reference numerals may be repeated to indicate that a particulardevice or block is wholly or substantially consistent across theFIGURES. This is not, however, intended to imply any particularrelationship between the various embodiments disclosed. In certainexamples, a genus of elements may be referred to by a particularreference numeral (“widget 10”), while individual species or examples ofthe genus may be referred to by a hyphenated numeral (“first specificwidget 10-1” and “second specific widget 10-2”).

FIG. 1 is a network-level diagram of a secured enterprise 100 accordingto one or more examples of the present specification. In this example,secured enterprise 100 may be configured to provide services or data toone or more customers 162, who may access information or services viaexternal network 172. This may require secured enterprise 100 to atleast partly expose certain services and networks to the outside world,thus creating a logical security aperture.

Within secured enterprise, one or more users 120 operate one or moreclient devices 110. Each device may include an appropriate operatingsystem, such as Microsoft Windows, Linux, Android, Mac OSX, Apple iOS,Unix, or similar. Some of the foregoing may be more often used on onetype of device than another. For example, desktop computers orengineering workstation may be more likely to use one of MicrosoftWindows, Linux, Unix, or Mac OSX. Laptop computers, which are usually aportable off-the-shelf device with fewer customization options, may bemore likely to run Microsoft Windows or Mac OSX. Mobile devices may bemore likely to run Android or iOS. However, these examples are notintended to be limiting.

Client devices 110 may be communicatively coupled to one another and toother network resources via enterprise network 170. Enterprise network170 may be any suitable network or combination of one or more networksoperating on one or more suitable networking protocols, including forexample, a local area network, an intranet, a virtual network, a widearea network, a wireless network, a cellular network, or the Internet(optionally accessed via a proxy, virtual machine, or other similarsecurity mechanism) by way of nonlimiting example. Enterprise network170 may also include one or more servers, firewalls, routers, switches,security appliances, antivirus servers, or other useful network devices,which in an example may be virtualized within workload cluster 142. Inthis illustration, enterprise network 170 is shown as a single networkfor simplicity, but in some embodiments, enterprise network 170 mayinclude a large number of networks, such as one or more enterpriseintranets connected to the internet. Enterprise network 170 may alsoprovide access to an external network, such as the Internet, viaexternal network 172. External network 172 may similarly be any suitabletype of network.

Customer 162 may also operate a customer device 116 to access networkresources, such as via external network 172. Customer device 116 mayalso include an HGDI engine as appropriate.

In this example, client devices 110 and customer devices 116 may each bea “first device” as described above. In other words, client device 110and customer devices 116 may include an HGDI engine 230 as illustratedin FIG. 2.

For example, as asset management server within workload cluster 142 maybe configured to track all machines owned and operated by securedenterprise 100. The asset management server may have an HGDI store 352(FIG. 3), including a third-party key to generate an HGDI for clientdevice 110, and a stored copy of the resultant HGDI. Thus, if the assetmanagement server wants to authenticate or verify client device 110, itmay send the clear-text third-party key, and receive back the encryptedHGDI, thus verifying the asset.

A workload cluster 142 may be provided, for example as a virtual clusterrunning in a hypervisor on a plurality of rack-mounted blade servers, oras a cluster of physical servers. Workload cluster 142 may provide oneor more server functions, or one or more “microclouds” in one or morehypervisors. For example, a virtualization environment such as vCentermay provide the ability to define a plurality of “tenants,” with eachtenant being functionally separate from each other tenant, and eachtenant operating as a single-purpose microcloud. Each microcloud mayserve a distinctive function, and may include a plurality of virtualmachines (VMs) of many different flavors, including agentful andagentless VMs. While workload cluster 142 is shown as physicallybelonging to secured enterprise 100 in this illustration, in someembodiments workload cluster 142 could be or could include a data centeroperated by a third party in which data center services are outsourced.

It should also be noted that some functionality of endpoint devices 110may also be provided via workload cluster 142. For example, onemicrocloud may provide a remote desktop hypervisor such as a Citrixworkspace, which allows users 120 operating endpoints 110 to remotelylogin to a remote enterprise desktop and access enterprise applications,workspaces, and data. In that case, endpoint 110 could be a “thinclient” such as a Google Chromebook, running only a stripped-downoperating system, and still provide user 120 useful access to enterpriseresources. In those cases, an HGDI engine may be used, for example, totrack which physical device a client is operating on. This could beused, for example, in allocating and billing out data center resourcesby tracking the physical resources consumed by a particular client.

One or more computing devices configured as a management console 140 mayalso operate on enterprise network 170. Management console 140 mayprovide a user interface for a security administrator 150 to defineenterprise security policies, which management console 140 may enforceon enterprise network 170 and across client devices 110 and workloadcluster 142. In an example, management console 140 may run aserver-class operating system, such as Linux, Unix, or Windows Server.In other case, management console 140 may be provided as a webinterface, on a desktop-class machine, or via a VM provisioned withinworkload cluster 142.

Secured enterprise 100 may encounter a variety of “security objects” onthe network. A security object may be any object that operates on orinteracts with enterprise network 170 and that has actual or potentialsecurity implications. In one example, security objects may be broadlydivided into hardware objects, including any physical device thatcommunicates with or operates via the network, and software objects.Software objects may be further subdivided as “executable objects” and“static objects.” Executable objects include any object that canactively execute code or operate autonomously, such as applications,drivers, programs, executables, libraries, processes, runtimes, scripts,macros, binaries, interpreters, interpreted language files,configuration files with inline code, embedded code, and firmwareinstructions by way of non-limiting example. A static object may bebroadly designated as any object that is not an executable object orthat cannot execute, such as documents, pictures, music files, textfiles, configuration files without inline code, videos, and drawings byway of non-limiting example. In some cases, hybrid software objects mayalso be provided, such as for example a word processing document withbuilt-in macros or an animation with inline code. For security purposes,these may be considered as a separate class of software object, or maysimply be treated as executable objects.

Secured enterprise 100 may communicate across enterprise boundary 104with external network 172. Enterprise boundary 104 may represent aphysical, logical, or other boundary. External network 172 may include,for example, websites, servers, network protocols, and othernetwork-based services. In one example, an application repository 160 isavailable via external network 172, and an attacker 180 (or othersimilar malicious or negligent actor) also connects to external network172. A security services provider 190 may provide services to securedenterprise 100.

It may be a goal of users 120 and secure enterprise 100 to successfullyoperate client devices 110 and workload cluster 142 without interferencefrom attacker 180 or from unwanted security objects. In one example,attacker 180 is a malware author, whose goal or purpose is to causemalicious harm or mischief, for example by injecting malicious object182 into client device 110. Once malicious object 182 gains access toclient device 110, it may try to perform work such as social engineeringof user 120, a hardware-based attack on client device 110, modifyingstorage 350 (FIG. 3), modifying client application 112 (which may berunning in memory), or gaining access to enterprise servers 142.

The malicious harm or mischief may take the form of installing root kitsor other malware on client devices 110 to tamper with the system,installing spyware or adware to collect personal and commercial data,defacing websites, operating a botnet such as a spam server, or simplyto annoy and harass users 120. Thus, one aim of attacker 180 may be toinstall his malware on one or more client devices 110. As usedthroughout this specification, malicious software (“malware”) includesany security object configured to provide unwanted results or dounwanted work. In many cases, malware objects will be executableobjects, including by way of non-limiting examples, viruses, Trojans,zombies, rootkits, backdoors, worms, spyware, adware, ransomware,dialers, payloads, malicious browser helper objects, tracking cookies,loggers, or similar objects designed to take a potentially-unwantedaction, including by way of non-limiting example data destruction,covert data collection, browser hijacking, network proxy or redirection,covert tracking, data logging, keylogging, excessive or deliberatebarriers to removal, contact harvesting, and unauthorizedself-propagation. HGDIs may be effective in preventing malware attacks,as devices can be uniquely identified to one another.

Attacker 180 may also want to commit industrial or other espionageagainst secured enterprise 100, such as stealing classified orproprietary data, stealing identities, or gaining unauthorized access toenterprise resources. In other embodiments, attacker 180 may wish tocommit software piracy (to duplicate or fraudulently install and useunpaid—for licensed software), or commit impersonation, hijacking, orfraud, or to undermine the integrity of data, web browsing, or networkconnectivity. Thus, attacker 180's strategy may also include trying togain physical access to one or more client devices 110 and operatingthem without authorization, so that an effective security policy mayalso include provisions for preventing such access.

In another example, a software developer may not explicitly havemalicious intent, but may develop software that poses a security risk.For example, a well-known and often-exploited security flaw is theso-called buffer overrun, in which a malicious user is able to enter anoverlong string into an input form and thus gain the ability to executearbitrary instructions or operate with elevated privileges on acomputing device. Buffer overruns may be the result, for example, ofpoor input validation or use of insecure libraries, and in many casesarise in nonobvious contexts. Thus, although he is not necessarilymalicious, a developer contributing software to application repository160 may inadvertently provide attack vectors for attacker 180.Poorly-written applications may also cause inherent problems, such ascrashes, data loss, or other undesirable behavior. Because such softwaremay be desirable itself, it may be beneficial for developers tooccasionally provide updates or patches that repair vulnerabilities asthey become known. However, from a security perspective, these updatesand patches are essentially new objects that must themselves bevalidated.

Application repository 160 may represent a Windows or Apple “App Store”or update service, a Unix-like repository or ports collection, or othernetwork service providing users 120 the ability to interactively orautomatically download and install applications on client devices 110.If application repository 160 has security measures in place that makeit difficult for attacker 180 to distribute overtly malicious software,attacker 180 may instead stealthily insert vulnerabilities intoapparently-beneficial applications.

In some cases, secured enterprise 100 may provide policy directives thatrestrict the types of applications that can be installed fromapplication repository 160. Thus, application repository 160 may includesoftware that is not negligently developed and is not malware, but thatis nevertheless against policy. For example, some enterprises restrictinstallation of entertainment software like media players and games.Thus, even a secure media player or game may be unsuitable for anenterprise computer. Security administrator 150 may be responsible fordistributing a computing policy consistent with such restrictions andenforcing it on client devices 110. Also, software authors forapplication repository 160 may wish to provide DRM or other anti-piracymeasures to ensure that they get paid for their work. And securedenterprise 100 may have an interest in ensuring that all softwaredeployed on its network is properly licensed, to avoid interference fromauditing groups, such as “The Software Alliance.” Thus, an HGDI may beused to uniquely and reliably associate software licenses with specificmachines.

Secured enterprise 100 may also contract with or subscribe to a securityservices provider 190, which may provide security services, updates,antivirus definitions, patches, products, and services. McAfee®, Inc. isa non-limiting example of such a security services provider that offerscomprehensive security and antivirus solutions. In some cases, securityservices provider 190 may include a threat intelligence capability suchas the global threat intelligence (GTI™) database provided by McAfeeInc. Security services provider 190 may update its threat intelligencedatabase by analyzing new candidate malicious objects as they appear onclient networks and characterizing them as malicious or benign. Securityservices provider 190 may also be a trusted broker that manages allowedconnections and that issues third-party keys. In one example, clientdevice 110 and customer device 116 may be configured to reject attemptsto connect to the HGDI engine unless signed by a trusted key.

In another example, secured enterprise 100 may simply be a family, withparents assuming the role of security administrator 150. The parents maywish to protect their children from undesirable content, such aspornography, adware, spyware, age-inappropriate content, advocacy forcertain political, religious, or social movements, or forums fordiscussing illegal or dangerous activities, by way of non-limitingexample. In this case, the parent may perform some or all of the dutiesof security administrator 150.

When a new object is first encountered on the network, security policiesmay initially treat it as “gray” or “suspect.” As a first line ofdefense, HGDI can be used to enumerate the devices on the network aspart of asset management or simply understanding who has connectivity tophysical and logical network layers. A security appliance in cluster 142may then query security services provider 190 to see if the new objecthas a globally-recognized reputation. If so, a local reputation may begenerated based on that global reputation. If not, the object iscompletely new and may be treated as a “candidate malicious object,”meaning that its status is unknown, and it may therefore be a maliciousobject. At a minimum, the new object may be proscribed in its access toprotected resources until its reputation can be established. This maymean that extra permission from a user 120 or security administrator 150is required for the candidate malicious object to access protectedresources.

The candidate malicious object may also be subjected to additionalrigorous security analysis, particularly if it is a new object with noglobal reputation, or if it is an executable object. This may include,for example, submitting the object to an internal security audit, or tosecurity services provider 190, for deep analysis. This may includerunning the object in a sandbox environment, expert status analysis, orother security techniques. These may help to establish a new reputationfor the object.

If the object is permitted to operate on the network and maliciousbehavior is observed, the object may be tagged as malicious object 182.Remedial action may then be taken as appropriate or necessary. Thus, itis a goal of users 120 and security administrator 150 to configure andoperate client devices 110, workload cluster 142, and enterprise network170 so as to exclude all malicious objects, and to promptly andaccurately classify candidate malicious objects.

FIG. 2 is a block diagram of client device 200 according to one or moreexamples of the present specification. Client device 200 may be anysuitable computing device. In various embodiments, a “computing device”may be or comprise, by way of non-limiting example, a computer,workstation, server, mainframe, virtual machine (whether emulated or ona “bare-metal” hypervisor), embedded computer, embedded controller,embedded sensor, personal digital assistant, laptop computer, cellulartelephone, IP telephone, smart phone, tablet computer, convertibletablet computer, computing appliance, network appliance, receiver,wearable computer, handheld calculator, or any other electronic,microelectronic, or microelectromechanical device for processing andcommunicating data. Any computing device may be designated as a host onthe network. Each computing device may refer to itself as a “localhost,” while any computing device external to it may be designated as a“remote host.”

In certain embodiments, client devices 110 and customer devices 116 mayall be examples of client devices 200.

Client device 200 includes a processor 210 connected to a memory 220,having stored therein executable instructions for providing an operatingsystem 222 and at least software portions of a HGDI engine 230. Othercomponents of client device 200 include a storage 250, network interface260, and peripheral interface 240. This architecture is provided by wayof example only, and is intended to be non-exclusive and non-limiting.Furthermore, the various parts disclosed are intended to be logicaldivisions only, and need not necessarily represent physically separatehardware and/or software components. Certain computing devices providemain memory 220 and storage 250, for example, in a single physicalmemory device, and in other cases, memory 220 and/or storage 250 arefunctionally distributed across many physical devices. In the case ofvirtual machines or hypervisors, all or part of a function may beprovided in the form of software or firmware running over avirtualization layer to provide the disclosed logical function. In otherexamples, a device such as a network interface 260 may provide only theminimum hardware interfaces necessary to perform its logical operation,and may rely on a software driver to provide additional necessary logic.Thus, each logical block disclosed herein is broadly intended to includeone or more logic elements configured and operable for providing thedisclosed logical operation of that block. As used throughout thisspecification, “logic elements” may include hardware, external hardware(digital, analog, or mixed-signal), software, reciprocating software,services, drivers, interfaces, components, modules, algorithms, sensors,components, firmware, microcode, programmable logic, or objects that cancoordinate to achieve a logical operation.

In an example, processor 210 is communicatively coupled to memory 220via memory bus 270-3, which may be for example a direct memory access(DMA) bus by way of example, though other memory architectures arepossible, including ones in which memory 220 communicates with processor210 via system bus 270-1 or some other bus. Processor 210 may becommunicatively coupled to other devices via a system bus 270-1. As usedthroughout this specification, a “bus” includes any wired or wirelessinterconnection line, network, connection, bundle, single bus, multiplebuses, crossbar network, single-stage network, multistage network orother conduction medium operable to carry data, signals, or powerbetween parts of a computing device, or between computing devices. Itshould be noted that these uses are disclosed by way of non-limitingexample only, and that some embodiments may omit one or more of theforegoing buses, while others may employ additional or different buses.

In various examples, a “processor” may include any combination of logicelements operable to execute instructions, whether loaded from memory,or implemented directly in hardware, including by way of non-limitingexample a microprocessor, digital signal processor, field-programmablegate array, graphics processing unit, programmable logic array,application-specific integrated circuit, or virtual machine processor.It should be noted that an HGDI of the present specification may work inboth general-purpose processors, and in dedicated security processor. Itmay also support trusted execution environments. In certainarchitectures, a multi-core processor may be provided, in which caseprocessor 210 may be treated as only one core of a multi-core processor,or may be treated as the entire multi-core processor, as appropriate. Insome embodiments, one or more co-processor may also be provided forspecialized or support functions.

Processor 210 may be connected to memory 220 in a DMA configuration viaDMA bus 270-3. To simplify this disclosure, memory 220 is disclosed as asingle logical block, but in a physical embodiment may include one ormore blocks of any suitable volatile or non-volatile memory technologyor technologies, including for example DDR RAM, SRAM, DRAM, cache, L1 orL2 memory, on-chip memory, registers, flash, ROM, optical media, virtualmemory regions, magnetic or tape memory, or similar. In certainembodiments, memory 220 may comprise a relatively low-latency volatilemain memory, while storage 250 may comprise a relatively higher-latencynon-volatile memory. However, memory 220 and storage 250 need not bephysically separate devices, and in some examples may represent simply alogical separation of function. It should also be noted that althoughDMA is disclosed by way of non-limiting example, DMA is not the onlyprotocol consistent with this specification, and that other memoryarchitectures are available.

Storage 250 may be any species of memory 220, or may be a separatedevice. Storage 250 may include one or more non-transitorycomputer-readable mediums, including by way of non-limiting example, ahard drive, solid-state drive, external storage, redundant array ofindependent disks (RAID), network-attached storage, optical storage,tape drive, backup system, cloud storage, or any combination of theforegoing. Storage 250 may be, or may include therein, a database ordatabases or data stored in other configurations, and may include astored copy of operational software such as operating system 222 andsoftware portions of HGDI engine 230. Many other configurations are alsopossible, and are intended to be encompassed within the broad scope ofthis specification.

Network interface 260 may be provided to communicatively couple clientdevice 200 to a wired or wireless network. A “network,” as usedthroughout this specification, may include any communicative platformoperable to exchange data or information within or between computingdevices, including by way of non-limiting example, an ad-hoc localnetwork, an internet architecture providing computing devices with theability to electronically interact, a plain old telephone system (POTS),which computing devices could use to perform transactions in which theymay be assisted by human operators or in which they may manually keydata into a telephone or other suitable electronic equipment, any packetdata network (PDN) offering a communications interface or exchangebetween any two nodes in a system, or any local area network (LAN),metropolitan area network (MAN), wide area network (WAN), wireless localarea network (WLAN), virtual private network (VPN), intranet, or anyother appropriate architecture or system that facilitates communicationsin a network or telephonic environment.

HGDI engine 230, in one example, is operable to carry outcomputer-implemented methods as described in this specification. HGDIengine 230 may include one or more tangible non-transitorycomputer-readable mediums having stored thereon executable instructionsoperable to instruct a processor to provide a HGDI engine 230. As usedthroughout this specification, an “engine” includes any combination ofone or more logic elements, of similar or dissimilar species, operablefor and configured to perform one or more methods provided by theengine. Thus, HGDI engine 230 may comprise one or more logic elementsconfigured to provide the HGDI generation methods disclosed in thisspecification.

In some cases, HGDI engine 230 may include a special integrated circuitor co-processor designed to carry out a method or a part thereof, and insome embodiments may also include software or firmware instructions toinstruct a processor to perform the method. In some cases, a softwareportion of HGDI engine 230 (or a program designed to operate along withHGDI engine 230), such as a user agent, may run as a “daemon” process. A“daemon” may include any program or series of executable instructions,whether implemented in hardware, software, firmware, or any combinationthereof that runs as a background process, a terminate-and-stay-residentprogram, a service, system extension, control panel, bootup procedure,BIOS subroutine, or any similar program that operates without directuser interaction. In certain embodiments, daemon processes may run withelevated privileges in a “driver space,” or in ring 0, 1, or 2 in aprotection ring architecture. It should also be noted that HGDI engine230 may also include other hardware and software, includingconfiguration files, registry entries, and interactive or user-modesoftware by way of non-limiting example.

In one example, HGDI engine 230 includes executable instructions storedon a non-transitory medium operable to perform a method according tothis specification. At an appropriate time, such as upon booting clientdevice 200 or upon a command from operating system 222 or a user 120,processor 210 may retrieve a copy of the instructions from storage 250and load it into memory 220. Processor 210 may then iteratively executethe instructions of HGDI engine 230 to provide the desired method. Insome embodiments, the non-transitory medium includes immutable hardwarelogic elements, as illustrated in the embodiment of FIG. 4A, in whichinternal private key 470 is programmed by or derived from fuses, andHGDI engine 230 includes logic primitives programmed directly intosilicon.

Peripheral interface 240 may be configured to interface with anyauxiliary device that connects to client device 200 but that is notnecessarily a part of the core architecture of client device 200. Aperipheral may be operable to provide extended functionality to clientdevice 200, and may or may not be wholly dependent on client device 200.In some cases, a peripheral may be a computing device in its own right.Peripherals may include input and output devices such as displays,terminals, printers, keyboards, mice, modems, data ports (e.g., serial,parallel, USB, Firewire, or similar), network controllers, opticalmedia, external storage, sensors, transducers, actuators, controllers,data acquisition buses, cameras, microphones, speakers, or externalstorage by way of non-limiting example.

In one example, peripherals include display adapter 242, audio driver244, and input/output (I/O) driver 246. Display adapter 242 may beconfigured to provide a human-readable visual output, such as acommand-line interface (CLI) or graphical desktop such as MicrosoftWindows, Apple OSX desktop, or a Unix/Linux X Window System-baseddesktop. Display adapter 242 may provide output in any suitable format,such as a coaxial output, composite video, component video, VGA, ordigital outputs such as DVI or HDMI, by way of nonlimiting example. Insome examples, display adapter 242 may include a hardware graphics card,which may have its own memory and its own graphics processing unit(GPU). Audio driver 244 may provide an interface for audible sounds, andmay include in some examples a hardware sound card. Sound output may beprovided in analog (such as a 3.5 mm stereo jack), component (“RCA”)stereo, or in a digital audio format such as S/PDIF, AES3, AES47, HDMI.,USB, Bluetooth or Wi-Fi audio, by way of non-limiting example.

FIG. 3 is a block diagram of a server-class device 300 according to oneor more examples of the present specification. Server 300 may be anysuitable computing device, as described in connection with FIG. 2. Ingeneral, the definitions and examples of FIG. 2 may be considered asequally applicable to FIG. 3, unless specifically stated otherwise.Server 300 is described herein separately to illustrate that in certainembodiments, logical operations according to this specification may bedivided along a client-server model, wherein client device 200 providescertain localized tasks, while server 300 provides certain othercentralized tasks. In contemporary practice, server 300 is more likelythan client device 200 to be provided as a “headless” VM running on acomputing cluster, or as a standalone appliance, though theseconfigurations are not required.

Server 300 includes a processor 310 connected to a memory 320, havingstored therein executable instructions for providing an operating system322 and at least software portions of a server engine 324. Othercomponents of server 300 include a storage 350, and network interface360. As described in FIG. 2, each logical block may be provided by oneor more similar or dissimilar logic elements.

In an example, processor 310 is communicatively coupled to memory 320via memory bus 370-3, which may be for example a direct memory access(DMA) bus. Processor 310 may be communicatively coupled to other devicesvia a system bus 370-1.

Processor 310 may be connected to memory 320 in a DMA configuration viaDMA bus 370-3, or via any other suitable memory configuration. Asdiscussed in FIG. 2, memory 320 may include one or more logic elementsof any suitable type.

Storage 350 may be any species of memory 320, or may be a separatedevice, as described in connection with storage 250 of FIG. 2. Storage350 may be, or may include therein, a database or databases or datastored in other configurations, and may include a stored copy ofoperational software such as operating system 322 and software portionsof server engine 324. Storage 350 may have stored thereon an HGDI store352, which may include stored copies of HGDIs associated with specificdevices, as well as correlated information, such as software licensestied to those HGDIs, or other data correlated with the HGDIs.

Network interface 360 may be provided to communicatively couple server140 to a wired or wireless network, and may include one or more logicelements as described in FIG. 2.

Server engine 324 is an engine as described in FIG. 2 and, in oneexample, includes one or more logic elements operable to carry outcomputer-implemented methods as described in this specification.Software portions of server engine 324 may run as a daemon process.

Server engine 324 may include one or more non-transitorycomputer-readable mediums having stored thereon executable instructionsoperable to instruct a processor to provide a security engine. At anappropriate time, such as upon booting server 140 or upon a command fromoperating system 322 or a user 120 or security administrator 150,processor 310 may retrieve a copy of server engine 324 (or softwareportions thereof) from storage 350 *and load it into memory 320.Processor 310 may then iteratively execute the instructions of serverengine 324 to provide the desired method.

Server engine 324 may be configured to interact with HGDI engine 230 ofFIG. 2 and to verify computing device 200 via HGDI 410 (FIG. 4A).

FIG. 4A is a block diagram of a HGDI system according to one or moreexamples of the present specification. In this embodiment, an HGDIengine 230 is provided, which may be encoded within processor 210, orwithin any other suitable system, subsystem, or component. HGDI engine230 includes an internal private key 470, which is unique orpseudo-unique to HGDI engine 230. The remainder of HGDI engine 230—forexample, the logic and interfaces—may be common across a class ofdevices.

Internal private key 470 may be derived according to the chainillustrated in more detail in FIG. 4b . This may include selectively andrandomly or pseudo-randomly blowing fuses as part of the manufacturingprocess. In certain embodiments, particularly embodiments involving massproduction, random variables in the manufacturing process itself may beused to determine the fuse blow pattern. The derived fuse blow patternis not stored or recorded, and no interface may be provided for readingout the pattern. And as HGDI engine 230 may use a non-reversible processto derive an HGDI 410 from the fuse blow pattern, it is very difficultfor any party to determine the internal private key 470 of a particulardevice short of destructively examining the silicon wafer, such as in ascanning electron microscope. Furthermore, the fuse blow pattern may notbe used directly as internal private key 470. As illustrated in FIG. 4B,the actual internal private key 470 may be several steps removed fromthe fuse blow pattern, thus further insulating the device from reverseengineering of its value. Furthermore, HGDI engine 230 may include acounter or other timing engine to prevent “replay” attacks, in which anattacker re-sends an old response that it has intercepted. Replayattacks may also be mitigated via one-time keys or any other suitablemeans.

In an embodiment, vendor 402 holds a PKI private key 450 and PKI publickey 440, which may be existing, known PKI keys. Note that the use ofseparate PKI keys is optional. Vendor 402 also holds an HGDI public key430 and HGDI private key 420.

At operation 1, vendor 402 HGDI public key 430 and optionally PKI publickey 440 to HGDI engine 230. PKI public key 440 may be used in caseswhere there is a reason to have a separate encryption key, though insome embodiments, HGDI public key 430 may serve both as a key togenerate HGDI 410, and as an encryption key to encrypt HGDI 410. Filter490 may be placed in certain embodiments to ensure that HGDI public key430 is a valid HGDI public key. For example, HGDI public keys may beissued by an issuing authority such as security services provider 190,and filter 490 may ensure that HGDI public key 430 has been issued by avalid authority and has not been revoked. This may be similar toexisting methods by which PKI or secure socket layer (SSL) certificatesare managed and issued.

At operation 2, HGDI engine 230 receives HGDI public key 430, and usinginternal private key 470, generates an HGDI 410.

At operation 3, HGDI engine 230 encrypts HGDI 410, either with HGDIpublic key 430, or PKI public key 440, as appropriate to the embodiment.

At operation 4, HGDI engine 230 may publish the HGDI public key 430 andHGDI 410 to one or more memory locations, such as an HGDI register 460.Note that HGDI register 460 need not be restricted. In certainembodiments, any process running on computing device 200 can read HGDIregister 460. This may be of interest to security researchers, as theability to read HGDI 410 should not, in theory, represent a securityconcern. This enables client-side programs on computing device 200 tomonitor the HGDI generation, including security daemons and user-spaceprograms.

At operation 5, HGDI engine 230 provide the encrypted HGDI key 410 tovendor 402.

In certain embodiments, from a security perspective, HGDI engine 230 andrelated functions are completely passive. In other words, HGDI engine230 may have no rights to modify, write to, interrupt, or interfere withthe system, except for writing a value to HGDI register 460. Because ithas no other rights or permissions on the system (write to disk, launchan application, etc.), HGDI engine 230 is a less desirable target forattackers seeking escalation of privileges or other avenues ofside-channel access.

Other system components may make appropriate decisions about what to dowith HGDI 410. Thus, HGDI engine 230′s primary, and possibly sole,function is to receive an HGDI public key input and generate an HGDIoutput, which it writes to a register or other memory location, and thentakes no further action. Thus, even if an attacker 180 is able tocompletely compromise HGDI engine 230, there is no security aperture,because HGDI engine 230 can only generate an HGDI and write it to theassigned memory location.

FIG. 4B is a block diagram that illustrates the logic of generating HGDI410 according to one or more examples of the present specification.Specifically, the blocks of FIG. 4B may represent operations to makewhile initially generating internal private key 470, or they mayrepresent operations that are performed on-the-fly each time internalprivate key 470 is generated.

HGDI public key 430 is first received. HGDI public key 430 may bereferred to mathematically as SPubK, the “source public key.”

Filter 490 ensures that only validly-issued public keys are permittedinto HGDI engine 230.

Fuse array 414, referred to mathematically as f(x), is the source ofHGDI internal private key 470. Note that while fuse array 414 mayrepresent a large integer programmed by the fuses, that large integerneed not always be used directly as HGDI internal private key 470. Insome embodiments, HGDI internal private key 470 can be derived from thefuse value. The function f(x) may be a one-way function to deriveinternal private key 470 from the fused value.

Derived block 424 is a function to derive a cypher of SPubK (Cy(SPubK))and the output of f(x) from block 414. In certain embodiments, this isthe unencrypted value of HGDI 410.

Block 434 is a salt value f(y). This may be used to help ensure that thefinal output is unique, and to protect derived value 424 from beingreverse engineered.

Block 444 is a salted derived value Cy(SPubK+salt).

Block 454 is an encrypted salted cypher. The encryption key may beeither HGDI public key 430 or PKI public key 440. The function may be astandard public key encryption function. An incremental counting featuremay also be provided to mitigate against replay or caching attacks.

The final output is SPubK(Cy(SpubK+salt)), which is stored as HGDI 410.This output is unique or pseudo-unique, and can be recovered via SPriK() (source private key).

FIG. 5 is a block diagram of a manufacturing ecosystem according to oneor more examples of the present specification. In the example of FIG. 5,manufacturer 530 intends to manufacture hardware, such as a computerthat is pre-installed with software provided by software vendor 580.

In this example, it is assumed that security services provider 190 is toact as a key broker, and that software vendor 580 and manufacturer 530both have existing, valid accounts with security services provider 190.

In operation 1, software vendor 580 provides to manufacturer 530licensed software, including in this example a license that is valid forone processor.

In operation 2, manufacturer 430 manufactures customer device 116, andpre-installs the licensed software. This may be or comprise an operatingsystem, or operational software such as an office suite, web browser,social media software, or similar. In some cases, customer device 116may be an engineering or artistic workstation, and may include softwareappropriate to that purpose, which in some cases may be very expensive.

In operation 3, manufacturer 530 requests an HGDI public key 430 fromsecurity services provider 190.

In operation 4, security services provider 190 returns an HGDI publickey 430. Note that this key may be unique or pseudo-unique to thespecific request, and when used with HGDI engine 230 of customer device116, generates an HGDI 410. Also note that manufacturer 530 couldinstall software from a plurality of software vendors 580, and mayrequest an HGDI 410 for each installation. Thus, each software vendormay have its own HGDI 410 for each customer device 116.

In operation 5, manufacturer 530 may share HGDI public key with softwarevendor 580. Note that this communication need not be secured. Indeed,manufacturer 530 could simply post HGDI public keys 430 to a publicwebsite, as HGDI public keys 430 will only generate the valid HGDI 410if used on the correct, specific customer device 116.

In operation 6, manufacturer 530 ships customer device 116 to customer162.

In operation 7, software vendor 580 may later need to verify the correctlicensed installation of software on customer device 116. Thus, softwarevendor 580 sends HGDI public key 430 to customer device 116. As before,this transaction may be performed in clear text.

In operation 8, customer device 116 sends back to software vendor 580the HGDI 410 that it generates from HGDI public key 430. This may beencrypted. Software vendor 580 now has verification that the license forcustomer device 116 is genuine.

This may also be used for other purposes than software licensing. Forexample, a social media application may be installed on customer device116. For increased security, a more cumbersome multi-factorauthentication may be required on “unknown” machines, such as a usernameand password in conjunction with an out-of-band verification code, suchas one sent via text to a listed phone number. However, once user 162has strongly authenticated once, and indicated that customer device 116is a machine that he regularly uses, software vendor 580 may not requiremulti-factor authentication as long as customer 162 continues to usecustomer device 116. In some cases of single-user devices, furtherauthentication may not be required anymore at all. Rather, the devicemay authenticate itself, taking the place of user authentication. Manyother uses for HGDI 410 are possible, and are intended to be encompassedwithin the broad scope of this description.

Note, however, that in the case of consumer-grade devices, customer 162may have the same capabilities as security administrator 150 of FIG. 1.Specifically, customer 162 may be able to see HGDI requests coming in,and may selectively decide to allow all, some, or none of them as hedeems necessary. Note however that HGDI 410 may be encrypted with apublic/private key pair, where the private key is held by softwarevendor 580, so that even customer 162 cannot view HGDI 410. Onlysoftware vendor 580 can view and decrypt HGDI 410.

Alternatively, customer 162 may have purchased customer device 116 froma third-party, and customer 162 may want to verify for himself that thesoftware on customer device 116 is genuinely licensed. Thus, in anexample, customer 162 may initiate a transaction, in which customer 162can provide the public keys for manufacturer 530 and/or securityservices provider 190, which can then be used to generate one or moreHGDIs 410. Customer 162 can then request that software vendor 580 and/ormanufacturer 530 verify the authenticity of customer device 116 orinstalled software.

In certain contexts, such as defense contexts, such a mechanism can alsobe used to verify that a machine has not been tampered with when beingtransferred from one group or department to another.

Note also that because PKI infrastructure is used, private keys can alsobe revoked. For example, if manufacturer 530 were to have its privatekey compromised so that its security is no longer valid, securityservices provider 190 can revoke the private key according to known PKImethods, and can re-issue a new private key. Manufacturer 530 may thenrebuild valid HGDIs 410 with affected devices such as customer device116. Advantageously, HGDI engine 230 need not know or care about the keycompromise. HGDI engine 230 can simply respond to whatever HGDI publickey 430 that it receives to produce an HGDI 410.

The foregoing outlines features of several embodiments so that thoseskilled in the art may better understand various aspects of the presentdisclosure. Those skilled in the art should appreciate that they mayreadily use the present disclosure as a basis for designing or modifyingother processes and structures for carrying out the same purposes and/orachieving the same advantages of the embodiments introduced herein.Those skilled in the art should also realize that such equivalentconstructions do not depart from the spirit and scope of the presentdisclosure, and that they may make various changes, substitutions, andalterations herein without departing from the spirit and scope of thepresent disclosure.

All or part of any hardware element disclosed herein may readily beprovided in a system-on-a-chip (SoC), including central processing unit(CPU) package. An SoC represents an integrated circuit. (IC) thatintegrates components of a computer or other electronic system into asingle chip. Thus, for example, client devices 110 or server devices 300may be provided, in whole or in part, in an SoC. The SoC may containdigital, analog, mixed-signal, and radio frequency functions, all ofwhich may be provided on a single chip substrate. Other embodiments mayinclude a multi-chip-module (MCM), with a plurality of chips locatedwithin a single electronic package and configured to interact closelywith each other through the electronic package. In various otherembodiments, the computing functionalities disclosed herein may beimplemented in one or more silicon cores in Application SpecificIntegrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), andother semiconductor chips.

Note also that in certain embodiment, some of the components may beomitted or consolidated. In a general sense, the arrangements depictedin the figures may be more logical in their representations, whereas aphysical architecture may include various permutations, combinations,and/or hybrids of these elements. It is imperative to note thatcountless possible design configurations can be used to achieve theoperational objectives outlined herein. Accordingly, the associatedinfrastructure has a myriad of substitute arrangements, design choices,device possibilities, hardware configurations, software implementations,and equipment options.

In a general sense, any suitably-configured processor, such as processor210, can execute any type of instructions associated with the data toachieve the operations detailed herein. Any processor disclosed hereincould transform an element or an article (for example, data) from onestate or thing to another state or thing. In another example, someactivities outlined herein may be implemented with fixed logic orprogrammable logic (for example, software and/or computer instructionsexecuted by a processor) and the elements identified herein could besome type of a programmable processor, programmable digital logic (forexample, a field programmable gate array (FPGA), an erasableprogrammable read only memory (EPROM), an electrically erasableprogrammable read only memory (EEPROM)), an ASIC that includes digitallogic, software, code, electronic instructions, flash memory, opticaldisks, CD-ROMs, DVD ROMs, magnetic or optical cards, other types ofmachine-readable mediums suitable for storing electronic instructions,or any suitable combination thereof.

In operation, a storage such as storage 250 may store information in anysuitable type of tangible, non-transitory storage medium (for example,random access memory (RAM), read only memory (ROM), field programmablegate array (FPGA), erasable programmable read only memory (EPROM),electrically erasable programmable ROM (EEPROM), etc.), software,hardware (for example, processor instructions or microcode), or in anyother suitable component, device, element, or object where appropriateand based on particular needs. Furthermore, the information beingtracked, sent, received, or stored in a processor could be provided inany database, register, table, cache, queue, control list, or storagestructure, based on particular needs and implementations, all of whichcould be referenced in any suitable timeframe. Any of the memory orstorage elements disclosed herein, such as memory 220 and storage 250,should be construed as being encompassed within the broad terms ‘memory’and ‘storage,’ as appropriate. A non-transitory storage medium herein isexpressly intended to include any non-transitory special-purpose orprogrammable hardware configured to provide the disclosed operations, orto cause a processor such as processor 210 to perform the disclosedoperations.

Computer program logic implementing all or part of the functionalitydescribed herein is embodied in various forms, including, but in no waylimited to, a source code form, a computer executable form, machineinstructions or microcode, programmable hardware, and variousintermediate forms (for example, forms generated by an assembler,compiler, linker, or locator). In an example, source code includes aseries of computer program instructions implemented in variousprogramming languages, such as an object code, an assembly language, ora high-level language such as OpenCL, FORTRAN, C, C++, JAVA, or HTML foruse with various operating systems or operating environments, or inhardware description languages such as Spice, Verilog, and VHDL. Thesource code may define and use various data structures and communicationmessages. The source code may be in a computer executable form (e.g.,via an interpreter), or the source code may be converted (e.g., via atranslator, assembler, or compiler) into a computer executable form, orconverted to an intermediate form such as byte code. Where appropriate,any of the foregoing may be used to build or describe appropriatediscrete or integrated circuits, whether sequential, combinatorial,state machines, or otherwise.

In one example embodiment, any number of electrical circuits of theFIGURES may be implemented on a board of an associated electronicdevice. The board can be a general circuit board that can hold variouscomponents of the internal electronic system of the electronic deviceand, further, provide connectors for other peripherals. Morespecifically, the board can provide the electrical connections by whichthe other components of the system can communicate electrically. Anysuitable processor and memory can be suitably coupled to the board basedon particular configuration needs, processing demands, and computingdesigns. Other components such as external storage, additional sensors,controllers for audio/video display, and peripheral devices may beattached to the board as plug-in cards, via cables, or integrated intothe board itself. In another example, the electrical circuits of theFIGURES may be implemented as stand-alone modules (e.g., a device withassociated components and circuitry configured to perform a specificapplication or function) or implemented as plug-in modules intoapplication specific hardware of electronic devices.

Note that with the numerous examples provided herein, interaction may bedescribed in terms of two, three, four, or more electrical components.However, this has been done for purposes of clarity and example only. Itshould be appreciated that the system can be consolidated orreconfigured in any suitable manner. Along similar design alternatives,any of the illustrated components, modules, and elements of the FIGURESmay be combined in various possible configurations, all of which arewithin the broad scope of this specification. In certain cases, it maybe easier to describe one or more of the functionalities of a given setof flows by only referencing a limited number of electrical elements. Itshould be appreciated that the electrical circuits of the FIGURES andits teachings are readily scalable and can accommodate a large number ofcomponents, as well as more complicated/sophisticated arrangements andconfigurations. Accordingly, the examples provided should not limit thescope or inhibit the broad teachings of the electrical circuits aspotentially applied to a myriad of other architectures.

Numerous other changes, substitutions, variations,' alterations, andmodifications may be ascertained to one skilled in the art and it isintended that the present disclosure encompass all such changes,substitutions, variations, alterations, and modifications as fallingwithin the scope of the appended claims. In order to assist the UnitedStates Patent and Trademark Office (USPTO) and, additionally, anyreaders of any patent issued on this application in interpreting theclaims appended hereto, Applicant wishes to note that the Applicant: (a)does not intend any of the appended claims to invoke paragraph six (6)of 35 U.S.C. section 112 (pre-AIA) or paragraph (f) of the same section(post-AIA), as it exists on the date of the filing hereof unless thewords “means for” or “steps for” are specifically used in the particularclaims; and (b) does not intend, by any statement in the specification,to limit this disclosure in any way that is not otherwise expresslyreflected in the appended claims.

Example Implementations

There is disclosed in one example, an electronic apparatus, comprising:a hardware-encoded internal private key; and one or more logic elementscomprising a key generation engine to: receive an third-party key; andoperate on the third-party key and the internal private key to generatea hardware-generated dynamic identifier (HGDI).

There is further disclosed an example, wherein the one or more logicelements are immutable hardware logic elements.

There is further disclosed an example, wherein the key generation engineis further to encrypt the HGDI.

There is further disclosed an example, wherein the key generation engineis further to encrypt the HGDI with a salt.

There is further disclosed an example, further comprising a filter toreject third-party keys not provided by a key authority.

There is further disclosed an example, wherein the key generation engineis passive.

There is further disclosed an example, wherein the key generation enginehas write permission only to one or more special-purpose memorylocations for storing the HGDI.

There is further disclosed an example, wherein the one or morespecial-purpose memory locations are not read restricted.

There is further disclosed an example, wherein the one or morespecial-purpose memory locations are not read restricted to system-levelresources.

There is further disclosed an example, wherein the internal private keyis encoded within the electronic apparatus so as to make the internalprivate key not reasonably directly readable.

There is further disclosed an example, wherein the internal private keyis encoded within the electronic apparatus so as to make the internalprivate key not reasonably directly readable without destructivelyexamining the electronic apparatus.

There is further disclosed an example, further comprising means tomitigate a replay attack.

There is further disclosed an example, wherein the means comprise atemporal counter.

There is further disclosed in an example, one or more tangible,non-transitory computer-readable storage mediums having stored thereonexecutable instructions for a processor to: provide an internal privatekey; receive an third-party key; and operate on the third-party key andthe internal private key to generate a hardware-generated dynamicidentifier (HGDI).

There is further disclosed an example, wherein the storage mediumcomprises immutable hardware logic elements.

There is further disclosed an example, wherein the instructions arefurther to encrypt the HGDI with a salt.

There is further disclosed an example, wherein the instructions arefurther to reject third-party keys not provided by a key authority.

There is further disclosed an example, wherein the instructions are towrite only to one or more special-purpose memory locations for storingthe HGDI.

There is further disclosed an example, wherein the one or morespecial-purpose memory locations are not read restricted to system-levelresources.

There is further disclosed an example, wherein the internal private keyis provided within the electronic apparatus so as to make the internalprivate key not reasonably directly readable.

There is further disclosed an example, wherein the internal private keyis provided within the electronic apparatus so as to make the internalprivate key not reasonably directly readable without destructivelyexamining the electronic apparatus.

There is further disclosed an example, wherein the instructions arefurther to mitigate a replay attack.

There is further disclosed an example, wherein the instructions arefurther to mitigate a replay attack comprising inspecting a temporalcounter.

There is further disclosed in an example, a method of providing ahardware-generated dynamic identifier (HGDI) in an immutable hardwarelogic element of an electronic device, comprising: providing ahardware-encoded internal private key; receiving a third-party key; andoperating on the third-party key and the internal private key togenerate a hardware-generated dynamic identifier (HGDI).

There is further disclosed an example, further comprising encrypting theHGDI.

There is further disclosed an example, further comprising encrypting theHGDI with a salt.

There is further disclosed an example, further comprising filtering toreject third-party keys not provided by a key authority.

There is further disclosed an example, further comprising writing theHGDI only to one or more special-purpose memory locations for storingthe HGDI.

There is further disclosed an example, wherein the one or morespecial-purpose memory locations are not read restricted.

There is further disclosed an example, wherein the one or morespecial-purpose memory locations are not read restricted to system-levelresources.

There is further disclosed an example, wherein providing the internalprivate key comprises encoding the internal private key within theelectronic device so as to make the internal private key not reasonablydirectly readable.

There is further disclosed an example, wherein providing the internalprivate key comprises encoding the internal private key within theelectronic device so as to make the internal private key not reasonablydirectly readable without destructively examining the electronic device.

There is further disclosed an example, further comprising mitigatingagainst a replay attack.

There is further disclosed an example, further comprising mitigatingagainst a replay attack comprising operating a temporal counter.

There is further disclosed an example, wherein providing the internalprivate key comprises deriving the internal private key from a valueencoded in hardware.

There is further disclosed an example, wherein deriving the internalprivate key from the value encoded in hardware comprises applying aone-way function to the value encoded in hardware.

There is further disclosed in an example, a method of providing ahardware-generated dynamic identifier comprising performing some or allof the operations of any of the foregoing examples.

There is further disclosed in an example, an apparatus comprising meansfor performing the method.

There is further disclosed an example, wherein the means for performingthe method comprise a processor and a memory.

There is further disclosed an example, wherein the memory comprisesmachine-readable instructions, that when executed cause the apparatus toperform the method.

There is further disclosed an example, wherein the apparatus is acomputing system.

There is further disclosed in an example, at least one computer readablemedium comprising instructions that, when executed, implement a methodor realize an apparatus as claimed in any of the foregoing examples.

What is claimed is:
 1. An electronic apparatus, comprising: ahardware-encoded internal private key, comprising a hardware-encodedfuse array not reasonably directly readable without destructivelyexamining the electronic apparatus; and one or more logic elementscomprising a passive key generation engine, the key generation enginehaving write permission only to one or more special-purpose memorylocations for storing pseudo-unique hardware-generated dynamicidentifiers (HGDIs), the key generation engine comprising: circuitry toreceive an unencrypted third-party key from a third party; functioncircuitry to apply a one-directional operation to the third-party keyand the internal private key to generate a pseudo-unique HGDI, whereinthe HGDI is unique and persistent with respect to the third party key;and derivation circuitry to derive a cypher of the public key and thefunction circuitry.
 2. The electronic apparatus of claim 1, wherein theone or more logic elements are immutable hardware logic elements.
 3. Theelectronic apparatus of claim 1, wherein the key generation engine isfurther to encrypt the HGDI.
 4. The electronic apparatus of claim 1,wherein the key generation engine is further to encrypt the HGDI with asalt.
 5. The electronic apparatus of claim 1, further comprising afilter to reject third-party keys not provided by a key authority. 6.The electronic apparatus of claim 1, wherein the one or morespecial-purpose memory locations are not read restricted.
 7. Theelectronic apparatus of claim 1, wherein the one or more special-purposememory locations are not read restricted to system-level resources. 8.The electronic apparatus of claim 1, further comprising means tomitigate a replay attack.
 9. The electronic apparatus of claim 8,wherein the means comprise a temporal counter.
 10. One or more tangible,non-transitory computer-readable storage mediums having stored thereonexecutable instructions for a processor of a hardware platform toprovide passive key generation, wherein the instructions are to writeonly to one or more special-purpose memory locations for storingpseudo-unique hardware-generated dynamic identifiers (HGDIs), furtheroperable to: provide an internal private key, comprising ahardware-encoded fuse array not reasonably directly readable withoutdestructively examining the hardware platform; receive an unencryptedthird-party key from a third party; and apply a one-directionaloperation to the third-party key and the internal private key togenerate a pseudo-unique HGDI, wherein the HGDI is unique and persistentwith respect to the third party key; and derive a cypher of the publickey and the function circuitry.
 11. The one or more tangible,non-transitory computer-readable storage mediums of claim 10, whereinthe one or more storage mediums comprise immutable hardware logicelements.
 12. The one or more tangible, non-transitory computer-readablestorage mediums of claim 10, wherein the instructions are further toencrypt the HGDI with a salt.
 13. The one or more tangible,non-transitory computer-readable storage mediums of claim 10, whereinthe instructions are further to reject third-party keys not provided bya key authority.
 14. The one or more tangible, non-transitorycomputer-readable storage mediums of claim 10 wherein the one or morespecial-purpose memory locations are not read restricted to system-levelresources.
 15. The one or more tangible, non-transitorycomputer-readable storage mediums of claim 10, wherein the instructionsare further to mitigate a replay attack.
 16. The one or more tangible,non-transitory computer-readable storage mediums of claim 15, whereinthe instructions are further to mitigate a replay attack comprisinginspecting a temporal counter.
 17. The one or more tangible,non-transitory computer-readable storage mediums of claim 10, whereinproviding the internal private key comprises deriving the internalprivate key from a value encoded in hardware.
 18. The one or moretangible, non-transitory computer-readable storage mediums of claim 17,wherein deriving the internal private key from the value encoded inhardware comprises applying a one-way function to the value encoded inhardware.
 19. A method of providing a hardware-generated deviceidentifier (HGDI) engine within immutable hardware of an electronicapparatus, the HGDI engine having write permission only to one or morespecial-purpose memory locations for storing pseudo-unique HGDIs,comprising providing passive key generation, and further comprising:providing a hardware-encoded internal private key, comprising ahardware-encoded fuse array not reasonably directly readable withoutdestructively examining the electronic apparatus; receiving anunencrypted third-party key from a third party; and applying aone-directional operation to the third-party key and the internalprivate key to generate a pseudo-unique HGDI, wherein the HGDI is uniqueand persistent with respect to the third party key; and deriving acypher of the public key and the function circuitry.
 20. The method ofclaim 19, further comprising encrypting the HGDI with a salt.
 21. Themethod of claim 19, further comprising rejecting third-party keys notprovided by a key authority.